package thread01;

/**
 * 线程的另一种创建方式：
 * 实现Runnable接口单独定义线程任务
 */
public class ThreadDemo2 {
    public static void main(String[] args) {
        //单独实例化任务
        Runnable r1 = new MyRunnable1();
        Runnable r2 = new MyRunnable2();

        //创建线程并指派任务
        Thread t1 = new Thread(r1);
        Thread t2 = new Thread(r2);
        t1.start();
        t2.start();
    }
}

/**
 * 这里单独定义线程任务是实现Runnable接口(或者后期在线程池中实现了Callable接口)
 * 由于是实现接口，不再是直接继承Thread，因此没有继承冲突问题了
 * <p>
 * 线程与任务解耦,可以让线程重复使用(后期线程池中会看到这个情况)
 */
class MyRunnable1 implements Runnable {
    public void run() {
        for (int i = 0; i < 1000; i++) {
            System.out.println("你是谁啊？");
        }
    }
}

class MyRunnable2 implements Runnable {
    public void run() {
        for (int i = 0; i < 1000; i++) {
            System.out.println("开门，查水表的！");
        }
    }
}
